From c7c47abdf486db56468193b2757858a2f3c85c2e Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Fri, 24 Nov 2000 19:29:05 +0000 Subject: [PATCH] (init_from_display_pos): If POS says we're already after an overlay string ending at POS, make sure to pop the iterator because it will be in front of that overlay string. When POS is ZV, we've thereby also ``processed'' overlay strings at ZV. --- src/xdisp.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/xdisp.c b/src/xdisp.c index 8d5d2b6b6f6..6cec7760926 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -1730,7 +1730,20 @@ init_from_display_pos (it, w, pos) it->current.string_pos = pos->string_pos; it->method = next_element_from_string; } - else if (CHARPOS (pos->string_pos) >= 0) + else if (it->current.overlay_string_index >= 0) + { + /* If POS says we're already after an overlay string ending at + POS, make sure to pop the iterator because it will be in + front of that overlay string. When POS is ZV, we've thereby + also ``processed'' overlay strings at ZV. */ + pop_it (it); + it->current.overlay_string_index = -1; + it->method = next_element_from_buffer; + if (CHARPOS (pos->pos) == ZV) + it->overlay_strings_at_end_processed_p = 1; + } + + if (CHARPOS (pos->string_pos) >= 0) { /* Recorded position is not in an overlay string, but in another string. This can only be a string from a `display' property. -- 2.30.2